﻿//-----------------------------------------------------------------------------------------------------------
// WBFSSync Project by Omega Frost 
// http://wbfssync.codeplex.com/
//
// WBFSSync is Licensed under the terms of the 
// Microsoft Reciprocal License (Ms-RL)
//-----------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using WBFSe3.Wbfs;
using WBFSe3.IO;
using WBFSe3.Interfaces;
using WBFSe3.Streams;

namespace WBFSe3.Formats
{
    //-------------------------------------------------------------------------------------------------------
    //
    //-------------------------------------------------------------------------------------------------------
    public abstract class WbfsFormatCreator
    {
        //---------------------------------------------------------------------------------------------------
        //
        //---------------------------------------------------------------------------------------------------
        public abstract WbfsPath Path { get; }
        public abstract int SectorSize { get; }


        //---------------------------------------------------------------------------------------------------
        //
        //---------------------------------------------------------------------------------------------------
        public abstract WbfsError Initialize(WbfsDriveInfo drive, String path, String filename,
            IWbfsGameInfo info, WbfsUsage usageTable, int sectorSize, int splitCount);


        //---------------------------------------------------------------------------------------------------
        //
        //---------------------------------------------------------------------------------------------------
        public abstract long EstimateFileSize();


        //---------------------------------------------------------------------------------------------------
        //
        //---------------------------------------------------------------------------------------------------
        public abstract WbfsError BeginCreate(out WbfsStream stream);


        //---------------------------------------------------------------------------------------------------
        //
        //---------------------------------------------------------------------------------------------------
        public abstract WbfsError EndCreate(bool succeeded);
    }
}
